/*
 * @Author: 橘子
 * @Project_description: 初始化配置对象
 * @Description: 代码是我抄的，不会也是真的
 */
const  {readDir} =require('./helper')
const {templateType,pageTypeEnum,moduleListEnum,tempEnum,serveEnum}=require('./types/index')
const config=require('./config/index')
module.exports = {
  //描述
  description: '创建一个Page',
  // 命令行交互问题
  prompts: [
    {
      type: 'list',
      name: templateType.path,
      message: '选择目录',
      choices: async () => {
        let arr = await readDir('../../src/views')
        console.log(arr)
        let pageDir = []
        arr.forEach(i => {
          pageDir.push({
            name: i,
            value: i,
          })
        })
        return pageDir
      }
    },
    // 一个问题对应一个对象，配置参考自定义Generator
    {
      type: 'input',
      name: templateType.name,
      message: '请输入页面名称',
      default: 'demo'
    },
    {
      type: 'input',
      name: templateType.routerName,
      message: '请输入页面名称(中文)',
      default: '模板'
    },
    {
      type: 'list',
      name: templateType.pageType,
      message: '选择页面类型',
      choices: [
        {
          name: '普通page',
          value: pageTypeEnum.prod,
          checked: true,
        },
        {
          name: '开发page(开发可见)',
          value: pageTypeEnum.dev,
          checked: false,
        },
      ],
    },

    {
      type: 'list',
      name: templateType.temp,
      message: '选择集成模板',
      choices: [
        {
          name: '普通表单',
          value: tempEnum.page,
          checked: true,
        },
        {
          name: '左树右表',
          value: tempEnum.tree,
          checked: false,
        },
      ],
    },
    {
      type: 'list',
      name: templateType.serve,
      message: '选择集成后端',
      choices: [
        {
          name: 'java',
          value: serveEnum.java,
          checked: true,
        },
        {
          name: 'koa',
          value: serveEnum.koa,
          checked: false,
        },
      ],
    },
    {
      type: 'checkbox',
      name: templateType.moduleList,
      message: '选择加入的模块',
      choices: [
        {
          name: 'api',
          value: moduleListEnum.api,
          checked: true
        },
        {
          name: 'router',
          value: moduleListEnum.router,
          checked: true
        },
      ]
    },
  ],
  // 完成命令行交互过后完成的一些动作
  actions:(data)=>{
    // 判断后端
    if (data[templateType.serve] ===serveEnum.java) {
      data = {
        ...data,
        page: 'pageNo',
        size: 'pageSize',
      }
    }
    if (data[templateType.serve] ===serveEnum.koa) {
      data = {
        ...data,
        page: 'page',
        size: 'size',
      }
    }
    let action=[]
    // 判断模板
    //如果为普通模板
    if(data[templateType.temp] === tempEnum.page) {
      let actionList=config.table(data)
      action.push(
        ...actionList
      )
    }
    //如果为左树右表
    if(data[templateType.temp] === tempEnum.tree) {
      let actionList=config.tree(data)
      action.push(
        ...actionList
      )
    }

    //判断api
    if(data[templateType.moduleList].includes(moduleListEnum.api)) {

      let actionList=config.api(data)
      action.push(
        actionList
      )
    }
    //判断路由
    if(data[templateType.moduleList].includes(moduleListEnum.router)&&data[templateType.pageType]===pageTypeEnum.dev) {
      let actionList=config.devRouter(data)
      action.push(
        actionList
      )
    }
    if(data[templateType.moduleList].includes(moduleListEnum.router)&&data[templateType.pageType]===pageTypeEnum.prod) {

      let actionList=config.prodRouter(data)
      action.push(
        actionList
      )
    }
    return action
  }
}
